package siac.com.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;

import siac.com.configuracao.ConexaoEclipselink;
import siac.com.entity.AuthPerfilMenu;


public class AuthPerfilMenuDao {
	private EntityManagerFactory factory;
	private EntityManager manager;
	private AuthPerfilMenu perfilMenu;
	private List<AuthPerfilMenu> listaAuthPerfilMenu;

	public AuthPerfilMenuDao() {
		factory = ConexaoEclipselink.getEntityManagerFactory();
	}

	private EntityManager getEntityManager() {
		return factory.createEntityManager();
	}

	public AuthPerfilMenu getAuthPerfilMenu() {
		if (this.perfilMenu == null) {
			this.perfilMenu = new AuthPerfilMenu();
		}
		return perfilMenu;
	}

	public void setAuthPerfilMenu(AuthPerfilMenu perfilMenu) {
		this.perfilMenu = perfilMenu;
	}

	public List<AuthPerfilMenu> getListaAuthPerfilMenu() {
		return listaAuthPerfilMenu;
	}

	public void setListaAuthPerfilMenu(List<AuthPerfilMenu> listaAuthPerfilMenu) {
		this.listaAuthPerfilMenu = listaAuthPerfilMenu;
	}

	public List<AuthPerfilMenu> findAll() {
		try {
			manager = getEntityManager();
			Query query = (Query) manager.createNamedQuery("AuthPerfilMenu.findAll");
			this.setListaAuthPerfilMenu(query.getResultList());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.listaAuthPerfilMenu;
	}

	public AuthPerfilMenu findId(Object id) {
		try {
			manager = getEntityManager();
			Query query = (Query) manager
					.createNamedQuery("AuthPerfilMenu.findById").setParameter(
							"idTabela", id);
			this.perfilMenu = (AuthPerfilMenu) query.getSingleResult();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.perfilMenu;
	}

	public List<AuthPerfilMenu> findByAccao(Object idAccao) {
		try {
			manager = getEntityManager();
			Query query = (Query) manager.createNamedQuery(
					"AuthPerfilMenu.findByAccao").setParameter("accao", idAccao);
			this.setListaAuthPerfilMenu(query.getResultList());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.listaAuthPerfilMenu;
	}

	public String save(AuthPerfilMenu bean) {
		try {
			manager = getEntityManager();
			manager.getTransaction().begin();
			manager.persist(bean);
			manager.getTransaction().commit();
			return "sucesso";
		} catch (Exception ex) {
			// ex.printStackTrace();
			// /messageUtility.addMensage(ex.getMessage(), "N");
			return "erro";
		}
	}

	public String delete(AuthPerfilMenu bean) {
		try {
			this.setAuthPerfilMenu(bean);
			manager = getEntityManager();
			manager.getTransaction().begin();
			AuthPerfilMenu ob = manager.find(AuthPerfilMenu.class, getAuthPerfilMenu()
					.getId());
			manager.remove(ob);
			manager.getTransaction().commit();
			return "sucesso";
		} catch (Exception ex) {
			// ex.printStackTrace();
			// /messageUtility.addMensage(ex.getMessage(), "N");
			return "erro";
		}
	}

	public String update(AuthPerfilMenu bean) {
		try {
			manager = getEntityManager();
			manager.getTransaction().begin();
			manager.merge(bean);
			manager.getTransaction().commit();
			return "sucesso";
		} catch (Exception ex) {
			// ex.printStackTrace();
			// /messageUtility.addMensage(ex.getMessage(), "N");
			return "erro";
		}
	}
}
